/* ************************************************************************

   Copyright: Juan Antonio Aldea Armenteros

   License: GPL v3

   Authors: Juan Antonio Aldea Armenteros

************************************************************************ */

qx.Class.define("jabber.LoginForm",
{
  extend : qx.ui.window.Window,
  events : { "aceptar" : "qx.event.type.Data" },

  construct : function()
  {
    this.base(arguments);
    this.setCaption("Conectar...");
    this.setModal(true);
    this.setShowClose(false);
    this.setAllowMaximize(false);
    this.setAllowMinimize(false);
    this.setResizable(false, false, false, false);

    //this._createChildControlImpl("layout");
    //this._createChildControlImpl("etiquetas");
    //this._createChildControlImpl("campos");
    //this._createChildControlImpl("botones");
    /**********/
    var control = new qx.ui.layout.Grid(9, 5);
    control.setColumnAlign(0, "right", "top");
    control.setColumnAlign(2, "right", "top");
    control.setColumnWidth(1, 160);
    control.setColumnWidth(2, 72);
    control.setColumnWidth(3, 108);
    this.setLayout(control);

    this.add(new qx.ui.basic.Label("Nombre").set(
    {
      allowShrinkX : false,
      paddingTop   : 3
    }),
    {
      row    : 0,
      column : 0
    });

    this.add(new qx.ui.basic.Label("Contraseña").set(
    {
      allowShrinkX : false,
      paddingTop   : 3
    }),
    {
      row    : 1,
      column : 0
    });

    this.__campoUsuario = new qx.ui.form.TextField();
    this.__campoContra = new qx.ui.form.PasswordField();
    this.__campoUsuario.setPlaceholder("Cuenta");
    this.__campoContra.setPlaceholder("Contraseña");

    this.add(this.__campoUsuario,
    {
      row    : 0,
      column : 1
    });

    this.add(this.__campoContra,
    {
      row    : 1,
      column : 1
    });

    var validador = new qx.ui.form.validation.Manager();
    this.__campoUsuario.setRequired(true);
    this.__campoContra.setRequired(true);
    validador.add(this.__campoUsuario, qx.util.Validate.email("Dirección inválida"));

    validador.add(this.__campoContra, function(value, item)
    {
      var valid = value != null && value.length > 0;

      if (!valid) {
        item.setInvalidMessage("Contraseña invalida");
      }

      return valid;
    });

    var botonera = new qx.ui.container.Composite;
    botonera.setLayout(new qx.ui.layout.HBox(10, "center"));

    this.add(botonera,
    {
      row     : 2,
      column  : 0,
      colSpan : 2
    });

    var botonConectar = new qx.ui.form.Button("Conectar");
    var botonCancelar = new qx.ui.form.Button("Cancelar");
    botonera.add(botonConectar);
    botonera.add(botonCancelar);

    botonConectar.addListener("execute", function(e)
    {
      botonConectar.setEnabled(false);
      botonConectar.setLabel("Validando...");
      validador.validate();
    },
    this);

    botonCancelar.addListener("execute", function(e) {
      this.close();
    }, this);

    validador.addListener("complete", function()
    {
      botonConectar.setEnabled(true);
      botonConectar.setLabel("Aceptar");

      if (validador.getValid())
      {
        this.fireDataEvent("aceptar",
        {
          usuario  : this.__campoUsuario.getValue(),
          password : this.__campoContra.getValue()
        });

        this.close();
      } else {}
    },

    //alert(validador.getInvalidMessages().join("\n"));
    this);
  },

  members :
  {
    __campoUsuario : null,
    __campoContra  : null
  }
});